package com.seiya.cookit.dao;

import java.util.*;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.util.Log;

import com.seiya.cookit.domain.Usuario;
import com.seiya.cookit.helper.UtilDB;

public class UsuarioDAO {

	public Map<String, Object> consultarUsuario(Context baseContext,
			String usuario) {
		Map<String, Object> usu = new HashMap<String, Object>();
		UtilDB db = UtilDB.GetUtilDb(baseContext);
		// recuperamos los datos de la BD local
		db.openDataBase();
		String sql = "select * from usuario where va_usu_usu = '" + usuario
				+ "'";
		Cursor cursor = db.getDataBase().rawQuery(sql, null);
		if (cursor.moveToFirst()) {
			usu.put("id", cursor.getInt(cursor.getColumnIndex("in_id_usu")));
			usu.put("usu", cursor.getString(cursor.getColumnIndex("va_usu_usu")));
			usu.put("pass", cursor.getString(cursor.getColumnIndex("va_pass_usu")));
			usu.put("email", cursor.getString(cursor.getColumnIndex("va_email_usu")));
			usu.put("estado", cursor.getInt(cursor.getColumnIndex("in_estado_usu")));
			usu.put("tipusu", cursor.getInt(cursor.getColumnIndex("in_id_tipusu")));
		}
		db.close();
		return usu;
	}

	public int obtCodigo(Context baseContext) {
		UtilDB db = UtilDB.GetUtilDb(baseContext);
		db.openDataBase();
		String sql = "select max(in_id_usu)+1 as codigo from usuario";
		Cursor cursor = db.getDataBase().rawQuery(sql, null);
		cursor.moveToFirst();
		int cod = cursor.getInt(cursor.getColumnIndex("codigo"));
		cursor.close();
		db.close();
		return cod;
	}

	public void registrar(Context baseContext, Usuario entidad) {
		ContentValues parametros = new ContentValues();
		parametros.put("in_id_usu", entidad.getId());
		parametros.put("va_usu_usu", entidad.getUsu());
		parametros.put("va_pass_usu", entidad.getPass());
		parametros.put("va_email_usu", entidad.getEmail());
		parametros.put("in_estado_usu", entidad.getEstado());
		parametros.put("in_id_tipusu", entidad.getTipusu());

		UtilDB db = UtilDB.GetUtilDb(baseContext);
		try {
			db.openDataBase();
			long id = db.getDataBase().insertOrThrow("usuario", null,
					parametros);
			Log.d("id", String.valueOf(id));
		} catch (SQLException ex) {
			Log.d("SQL insert", "Error", ex);
		} finally {
			db.close();
		}
	}

	public void actualizarUsuario(Context baseContext, Map<String, Object> usuario) {
		ContentValues parametros = new ContentValues();
		parametros.put("in_id_usu", usuario.get("id").toString());
		parametros.put("va_usu_usu", usuario.get("usu").toString());
		parametros.put("va_pass_usu", usuario.get("pass").toString());
		parametros.put("va_email_usu", usuario.get("email").toString());
		parametros.put("in_estado_usu", usuario.get("estado").toString());
		parametros.put("in_id_tipusu", usuario.get("tipusu").toString());

		UtilDB db = UtilDB.GetUtilDb(baseContext);
		try {
			db.openDataBase();
			db.getDataBase().update("usuario", parametros, "in_id_usu = ?",
					new String[] { usuario.get("id").toString() });
		} catch (SQLException ex) {
			Log.d("SQL update", "Error", ex);
		} finally {
			db.close();
		}
	}


}
